/*
https://www.luogu.com.cn/problem/B3629
寻找最小的mid，使得𝑓(𝑚𝑖𝑑)≥𝑛
calc 函数：
循环模拟，把棒子换冰棍，继续吃主函数：答案上限为n（吃的≥买的）。开始二分
•当买mid 个可以满足要求，记录答案，尝试枚举更小的数字。
•当买mid 个不满足要求，尝试枚举更大的数字。
*/
#include <bits/stdc++.h>
using namespace std;
int n;
int calc(int x) {
// 开始买 x 根冰棍，实际能吃的冰棍数
    int total = x;
    // total 是吃到的冰棍数量
    // x 是目前手里的棒子数量
    while(x >= 3) { // 当手里的棒子还可以换冰棍
        total += x / 3;//能吃的冰棍数量增加
        x = x % 3 + x / 3;//手里的棒子数量，减去刚才换冰棍用掉的数量，加上刚吃的冰棍数量
    }
    return total;
}
int main() {
    int l, r, mid, ans;
    cin >> n;
    l = 1; r = n;
    ans = -1;
    while(l <= r) {
        mid = (l + r) / 2;
        if(calc(mid) >= n) { // 如果买 mid 个冰棍，实际上可以吃到不少于 n 个冰棍
            ans = mid; // 记录答案
            r = mid - 1; // 限定在左半边
        } else
            l = mid + 1; // 限定在右半边
    }
    cout << ans << endl;
    return 0;
}
/*
g++ binary_search/bin_5.cpp && echo 20 | ./a.out
*/